// 使用 pinia 来存储用户登录的信息 和 用户名 的信息

// 导入创建 pinia 的方法
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
import { getCartsList } from '@/apis/carts'

interface Goods {
  [key: string]: any
}

const useCartsInfo = defineStore('cartsInfo', () => {
  // 准备一个变量, 表示购物车列表
  const cartsList = ref<Goods[]>([])

  // 获取购物车列表的方法
  const getCarts = async () => {
    const userid = window.localStorage.getItem('user_id') as string

    const res = await getCartsList(userid)

    cartsList.value = res.data || []
  }

  // 计算属性 - 计算是否全选
  const checkedAll = computed<boolean>({
    get () { return cartsList.value.every(item => item.flag) },
    set (val) {
      cartsList.value.forEach(item => item.flag = val)
    }
  })

  // 计算属性 - 计算总价
  const priceAll = computed<number>(() => {
    return cartsList.value.reduce((prev, item) => {
      if (item.flag) {
        return prev + item.num * item.originprice
      } else {
        return prev
      }
    }, 0) * 100
  })

  return {
    cartsList,
    getCarts,
    checkedAll,
    priceAll
  }
})

// 导入仓库
export default useCartsInfo
